Make Task Controller work with John Deere tractors factory harness#32
Conversation
Add an extra parameter in the settings.json file under %APPDATA%/AOG-Taskcontroller to disable tecuFunction. (John Deere tractor didn't appreciate having a second TECU on the bus) and likely all the tractors with proper ISOBUS will be the same. Our TC discovered the tractor as ISOBUS implement and resulted in a section collision...
There was a problem hiding this comment.
Pull request overview
This PR adds a configurable way to disable creating a Tractor ECU (TECU) control function to avoid John Deere factory harness / ISOBUS bus collisions, and adds some guardrails to avoid treating non-implement devices as section-control clients.
Changes:
- Add
tecuEnabledsetting (persisted insettings.json) and gate TECU creation on it. - Skip section-control operations for clients that don’t support section control / have zero sections.
- Expand logging and update build/formatting instructions + bump project version.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
src/task_controller.cpp |
Adds client logging and skips section-control operations for clients lacking SectionControlState DDI. |
src/settings.cpp |
Loads/saves new tecuEnabled boolean setting and exposes getter/setter. |
src/app.cpp |
Uses tecuEnabled to conditionally create TECU; skips UDP heartbeat payloads for clients with 0 sections. |
include/settings.hpp |
Declares tecuEnabled API and default. |
readme.md |
Updates CMake invocation and adds formatting/pre-commit instructions. |
CMakeLists.txt |
Bumps project version to 1.3.1. |
Comments suppressed due to low confidence (1)
src/task_controller.cpp:465
- The new object-pool transfer log runs every time store_device_descriptor_object_pool() is called, which can be very frequent during DDOP uploads and may flood stdout / slow transfers. Consider lowering this to a debug-level log, rate-limiting it, or logging only once per transfer (e.g., when appendToPool is false / first chunk).
bool MyTCServer::store_device_descriptor_object_pool(std::shared_ptr<isobus::ControlFunction> partnerCF, const std::vector<std::uint8_t> &binaryPool, bool appendToPool)
{
std::cout << "[TC Server] Client " << partnerCF->get_NAME().get_full_name() << " requesting object pool transfer of " << binaryPool.size() << " bytes" << std::endl;
if (uploadedPools.find(partnerCF) == uploadedPools.end())
{
uploadedPools[partnerCF] = std::queue<std::vector<std::uint8_t>>();
}
uploadedPools[partnerCF].push(binaryPool);
return true;
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…skController into johndeere_issues
There was a problem hiding this comment.
Pull request overview
Adds a configurable way to disable creating a local Tractor ECU (TECU) control function to avoid collisions on tractors with an existing factory TECU (e.g., John Deere), and tightens section-control handling to ignore non-implement clients.
Changes:
- Add
tecuEnabled(defaulttrue) to settings load/save and gate TECU initialization on it. - Avoid interacting with non-implement clients in section-control paths (skip “no sections” clients; skip clients lacking section-control DDI mapping).
- Document the new configuration option and bump project version.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/task_controller.cpp | Adds client logs; changes section-control update logic to skip certain clients and fixes early-return behavior. |
| src/settings.cpp | Loads/saves tecuEnabled from settings.json with a default fallback. |
| src/app.cpp | Gates TECU creation on settings->is_tecu_enabled() and skips heartbeat payloads for clients with zero sections. |
| include/settings.hpp | Declares tecuEnabled setting and accessors with default value. |
| readme.md | Documents tecuEnabled and updates the suggested CMake configure command. |
| CMakeLists.txt | Version bump to 1.3.1. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
We have validated this on a second machine as well. |
Add an extra parameter in the settings.json file under %APPDATA%/AOG-Taskcontroller to disable tecuFunction. (John Deere tractor didn't appreciate having a second TECU on the bus) and likely all the tractors with proper ISOBUS will be the same.
Our TC discovered the tractor as ISOBUS implement and resulted in a section collision...